"""
第一步：选择鼠标的行为（参数是元素对象 -element）： 通过driver.find_element找到的元素，再选择鼠标行为：
* 悬浮-移动鼠标 move_to_element() -- p1
* 点击 click() --p1
* 拖拽 drag_and_drop(element1,element2) --P1
    * 先找到element1，再找到element2，拖拽执行
第二步：执行鼠标操作行为 - perform()，鼠标操作一定要perform才会执行。

ActionChains鼠标操作的具体的使用步骤：
* 1、实例化ActionChains对象
* 2、调用你要使用的鼠标操作行为 ：
    * 可以用链式调用 - 因为每个方法返回的都是self ，可以连续调用
* 3、调用perform()去执行鼠标操作： 一定要perform才会执行。

from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import Select
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep

driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com/')

# 元素定位表达式-设置按钮
ele_setting = driver.find_element(By.ID,"s-usersetting-top")

# 1、实例化ActionChains对象 + 2、调用你要使用的鼠标操作行为 ：-悬浮 移动鼠标到某个元素+3、调用perform()去执行鼠标操作
ActionChains(driver).move_to_element(ele_setting).perform()
sleep(2)

# 找到高级搜索按钮 --用鼠标点击操作
ele_search = driver.find_element(By.XPATH,'//span[text()="高级搜索"]')
ActionChains(driver).click(ele_search).perform()
sleep(2)

driver.quit()
"""

# 练习
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
import time

driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()
yuansu = driver.find_element(By.XPATH,"//span[@id='s-usersetting-top']")
ActionChains(driver).move_to_element(yuansu).perform()
time.sleep(2)
yuansu1 = driver.find_element(By.XPATH,"//span[text()='高级搜索']")
ActionChains(driver).move_to_element(yuansu1).perform()
time.sleep(5)



# 总结
# from selenium.webdriver.common.action_chains import ActionChains
# 针对无法定位 需要使用鼠标操作的。
# 首先需要定位元素 赋值变量。
# 公式：ActionChains(driver).move_to_element("元素赋值变量").perform()